
#include "SerialPort.h"
#include <QDebug>
SerialPort::SerialPort(QObject *parent) : QObject(parent) {
    serial = new QSerialPort(this);

    // 假设有界面元素 comboBox 用于选择串口，buttonOpen 用于打开串口
    // connect(buttonOpen, &QPushButton::clicked, this, &SerialPort::openSerialPort);
}

SerialPort::~SerialPort(){
    delete serial;
}

QList<QSerialPortInfo> SerialPort::getSerialPortList(){
    const auto infos = QSerialPortInfo::availablePorts();
    for (const QSerialPortInfo &info : infos) {
        QString portDescription = QString("%1 (%2)").arg(info.portName(), info.description());
        qDebug() << portDescription;
        // comboBoxSerialPorts->addItem(portDescription, info.portName());
    }
    return infos;
}

void SerialPort::openSerialPort(){
    // QString portName = comboBox->currentText();
    // serial->setPortName(portName);
    serial->setBaudRate(QSerialPort::Baud9600);
    serial->setDataBits(QSerialPort::Data8);
    serial->setParity(QSerialPort::NoParity);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setFlowControl(QSerialPort::NoFlowControl);

    if (serial->open(QIODevice::ReadWrite)) {
        // 串口打开成功
    } else {
        // 错误处理
    }
}

void SerialPort::closeSerialPort(){
    if (serial->isOpen())
        serial->close();
}


void SerialPort::readData(){
    QByteArray data = serial->readAll();
    // textEdit->append(data);  // 假设 textEdit 是用于显示接收数据的 QTextEdit
}

void SerialPort::writeData(const QByteArray &data) {
    serial->write(data);
}
